/**
 * @Title: ThreadLocalFactory.java
 * @Package com.yly.utils
 * @Description: 操作线程本地对象工具类
 * @author zz
 * @date 2013-12-16 上午11:16:28
 * @version V1.0
 */
package com.yly.utils;

import java.util.HashMap;

/**
 * @ClassName: 操作线程本地对象工具类
 * @Description: 操作线程本地对象工具类
 * @author zz
 * @date 2013-12-16 上午11:16:28
 */
public class ThreadLocalUtil {
	
	@SuppressWarnings("rawtypes")
	private static final ThreadLocal continer = new ThreadLocal();

	@SuppressWarnings("unchecked")
	public static void set(Object value) {
		continer.set(value);
	}

	public static Object get() {
		return continer.get();
	}

	@SuppressWarnings("unchecked")
	public static void clear() {
		continer.set(null);
	}
	
	public static void remove(String keys) {
		set(keys, null);
	}

	
	/**
	 * <p>Title: 设置线程中的本地对象</p>
	 * <p>Description: 设置线程中的本地对象</p>
	 * @param keys 对象存放位置字符串（<b>.</b>）隔开
	 * @param value 存放的内容
	 */
	@SuppressWarnings("rawtypes")
	public static void set(String keys, Object value) {
		if (!StrUtil.nil(keys)) {
			Object obj = get();
			if(obj == null){
				obj = new HashMap();
				set(obj);
			}
			String[] keyArr = keys.split("\\.");
			ObjectUtil.set(obj, keyArr, value);
		}
	}

	
	
	/**
	 * <p>Title: 获得线程中的本地对象</p>
	 * <p>Description: 获得线程中的本地对象</p>
	 * @param keyArr 对象存放位置字符串（<b>.</b>）隔开
	 * @return 获取的对象
	 */
	public static Object get(String keys) {
		Object result = null;
		if (!StrUtil.nil(keys)) {
			Object obj = get();
			if(obj != null){
				String[] keyArr = keys.split("\\.");
				result = ObjectUtil.get(obj, keyArr);
			}
		}
		return result;
	}

	

	
}
